package tech.aistar.day10;

import tech.aistar.day08.equal.Book;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

/**
 * 本类用来演示:
 *
 * @author: success
 * @date: 2021/3/19 10:16 上午
 */
public class ArrayDemo {
    public static void main(String[] args) {
        //创建一个ArrayList对象
        //推荐使用面向接口编程

        //jdk5.0之前 - 类型不安全的容器
        //可以向这个容器中添加任意类型的数据.
        List list = new ArrayList();
        //添加元素
        list.add(10);//ok
        list.add("google");//对象
        list.add(null);

        //重写toString方法
        System.out.println(list);//[10, google, null]

        //jdk5.0开始引入了泛型的概念 - 类型的参数化
        //容器 - 类型安全的容器.
        //泛型只能用对象类型
        //该容器就只能添加Integer类型的数据
        List<Integer> mList = new ArrayList<Integer>();
        //有序可重复
        mList.add(10);
        mList.add(20);
        mList.add(10);
        mList.add(null);
        //mList.add("ok");//error
        //mList.add('s');//error
        System.out.println(mList);

        //jdk7.0开始
        //泛型 - 可以把类型当成参数进行传递.
        List<Book> books = new ArrayList<>();
        Book b1 = new Book(5,"1005","西游记",600.0d);
        Book b2 = new Book(6,"1007","西游记",600.0d);
        Book b3 = new Book(7,"1008","西游记",600.0d);

        books.add(b1);
        books.add(b2);
        books.add(b3);

        System.out.println(books);

        //判断集合中是否包含某个元素
        Book b4 = new Book(7,"1008","西游记",600.0d);

        //equals&hashcode
        System.out.println(books.contains(b4));//true

        //将集合转成数组
        Object[] arr = books.toArray();
        System.out.println(Arrays.toString(arr));

        //清空集合
        //books.clear();

        //判断集合中的元素的个数是否0
        System.out.println(books.isEmpty());

        System.out.println("=====");
        //拓展 - jdk8新特性,集合新的遍历方式
//        books.forEach(new Consumer<Book>() {
//            @Override
//            public void accept(Book book) {
//                System.out.println(book);
//            }
//        });

        books.forEach(e-> System.out.println(e));

        System.out.println("====");

        books.forEach(System.out::println);


    }
}
